package com.azxcrm.project.system.customer.service;

import java.util.List;

import com.azxcrm.project.system.customer.domain.CustomerClue;
import com.azxcrm.project.system.customer.domain.CustomerInfo;

/**
 * 客户 服务层
 * 
 * @author Dustyone
 * @date 2018-09-04
 */
public interface ICustomerInfoService 
{
	
	/**
     * 查询客户信息
     * 
     * @param customerId 客户ID
     * @return 客户信息
     */
	 CustomerInfo selectCustomerInfoById(Integer customerId);
	
	/**
     * 查询客户列表
     * 
     * @param customerInfo 客户信息
     * @return 客户集合
     */
	 List<CustomerInfo> selectCustomerInfoList(CustomerInfo customerInfo);
	
	 /**
	  * 通过客户背景ID查询客户背景
	  * @param backgroundId
	  * @return 客户背景
	  */
	 List<CustomerInfo> selectCustomerBackgroundId(Integer backgroundId);
	 
	 /**
	  * 通过手机号查询
	  * @param cellphone
	  * @return 结果
	  */
	 CustomerInfo selectCustomerCellPhone(String cellphone);
	 
	 
	 /**
	 * 通过身份证查询客户信息
	 * @param identityNum
	 * @return
	 */
	CustomerInfo selectCustomerByIdNo(String identityNum);
	/**
     * 新增客户
     * 
     * @param customerInfo 客户信息
     * @return 结果
     */
	 int insertCustomerInfo(CustomerInfo customerInfo);
	
	/**
     * 修改客户
     * 
     * @param customerInfo 客户信息
     * @return 结果
     */
	 int updateCustomerInfo(CustomerInfo customerInfo);
	
	/**
     * 保存客户
     * 
     * @param customerInfo 客户信息
     * @return 结果
     */
	 int saveCustomerInfo(CustomerInfo customerInfo);
	
	/**
     * 删除客户信息
     * 
     * @param customerId 客户ID
     * @return 结果
     */
	 int deleteCustomerInfoById(Integer customerId);
	
	/**
     * 批量删除客户信息
     * 
     * @param customerIds 需要删除的数据ID
     * @return 结果
     */
	 int batchDeleteCustomerInfo(Integer[] customerIds);
	 
	 /**
	  * 校验客户手机是否重复
	  * 
	  * @param cellphone 需要查询的手机号
	  * @return
	  */
	 String checkCellphone(String cellphone);
	
	 /**
	 * 模糊查询客户信息
	 * 
	 * @param name 需要查询的用户名，@param cellphone 需要查询的手机号，@param identityNum 需要查询的身份证号
	 * @return 结果
	 */
	 List<CustomerInfo> selectCustomerInfo(CustomerInfo customerInfo);
	 
	 /**
	 * 客户信息转化封装方法
	 * @param customerClue
	 * @param customerInfo
	 * @return
	 */
	CustomerInfo CustomerConvert(CustomerClue customerClue);
}
